Lab 01: Procesamiento de datos

Antes de empezar a entrenar un modelo es importante conocer los datos para alimentar el modelo con datos que aporten valor y nos ayuden a realizar una correcta Prediccion/Clasificacion/Segmentacion. Esta actividad se conoce como Analisis Exploratorio (EDA)
Vamos a analizar dos atributos importantes a la hora de definir que variables van a alimentar el modelo:

Configuracion

Trate de ejecutar la siguiente celda para validar que las librerias que vamos a utilizar hoy se encentran instaladas correctamente. Si no es asi, instale las librerias faltantes. Luego, vuelva a intentar cargarlas hasta que la celda se ejecute sin errores.

Cargar el set de datos

Vamos a usar un set de datos del UC Irvine Machine Learning Repository en donde se registran los atributos de varias botellas de vino junto con su calidad. Este dataset ha sido modificado un poco para trabajar la limpieza y calidad en este laboratorio. La version original puede descargrse aqui

Vamos a cargar este dataset en este laboratorio para procesarlo y dejarlo listo para los siguientes laboratorios de prediccion y clasificacion. De esta forma usaremos el mismo dataset a lo largo de todo el flujo del curso como si se tratara de un proyecto real!

Calidad de Datos

Lo primero que debemos hacer, y que parece obvio, es revisar una muestra de los datos para darnos una idea de los valores que vienen en cada columna/atributo

Tambien es importante conocer con anterioridad el tamaño de los datos con los que estamos tratando, esto podemos verlo en las variables de ambiente de la derecha.

En este caso, la cantidad de filas (4898) es la cantidad de muestras o registros a analizar y la cantidad de columnas (12) son los atributos o variables de cada muestra.

Otra buena practica al iniciar el Analisis Exploratorio es validar los tipos de dato con los que estamos tratando. Esto nos permitira tratar cada atributo de la manera correspondiente o realizar las transformaciones necesarias.

En este caso, todas las variables son numericas (dbl o int), lo que las hace buenas candidatas para un modelo, por ejemplo de regresion. Si se encontraran variables categoricas deberiamos hacer la validacion y transformacion de estos valores.

Ya con una idea mas clara de la estructura de datos con la que estamos tratando, realicemos un analisis matematico rapido sobre los datos:

Esto nos entrega un resumen de las medidas de tendencia y dispercion de los atributos numericos de nuestro dataset:

Ya tenemos un poco mas clara la estructura de los datos, pero con solo ver una muestra de 5 registros, no podemos estar seguros de conocer todos los posibles valores de cada columna.

Datos Faltantes

En R, un dato vacio o faltante es identificado con el valor NA (Not a Number) y debemos identificar que valores faltantes hay en cada atributo y entender su significado. Ya lo vimos en el conteo de valores de la celda anterior, pero tambien podemos verlo particularmente:

Hay dos variables que llaman nuestra atencion: citric acid y color. Que podemos hacer con estos datos?

Ya vimos en la descripcion de datos que el minimo valor de citric acid es 0.12, cuando es posible quela acidez de un vino tinto sea 0 y no tenemos valores en 0. Coincidencia?
Vamos a arriesgarnos a reemplazar los valores por cero (0), para no tener que eliminar estos registros

El caso de color es distinto, son muchos los valores faltantes (3593 de 4898). Veamos que valores tienen los pocos registros que si aportan informacion

Ademas de los 3593 valores en Nulo, se tienen 428 en valor 8 y 877 en valor 13. Estos valores realmente no nos dicen nada, si no conocemos el significado de cada uno. Lo mejor en este caso es eliminar la columna ya que no aportaria nada al modelo, ni es algo que podamos explicar.

Valores Atipicos

Un valor atipico (en ingles Outlier) es un valor que esta por fuera del dominio normal de una variable. Por ejemplo, en un set de datos de personas, el dominio de la variable edad podria ser entre 1 y 99 años. Si se encuentra un valor negativo, o un valor muy alto (Por ejemplo, 200) que es imposible, o raro dentro del concepto (edad)es considerado atipico y debe ser tratado con cuidado.
Ya en celdas alteriores vimos una forma de detectar atipicos de forma general en el dataset con la funcion df.describe(), ya que nos entrega los quartiles. Sin embargo, siempre es mas facil entender los datos graficamente:

Esto nos permite visualizar la distribucion de cada variable, valores mas comunes y de pronto algunos atipicos. Pero la mejor forma de determinar si hay datos fuera de lo normal es con un analisis estadistico de cajas:

Dicen los expertos, que el pH de un vino tinto varia entre 3.3 y 3.6 g/l. Éste conocimiento de negocio, asi como la grafica anterior nos permite dudar un poco de las muestras con valores superiores, por ejemplo a 4. Este valor puede variar como consideremos conveniente. No se recomienda cortar estrictamente en el intervalo que dicta la regla de negocio (3.3 - 3.6) pues algunos atipicos cercanos pueden ser posibles enla naturaleza

Realizando de nuevo nuestro resumen de metricas estadisticas, vemos que ya no se tienen valores faltantes es nungun atributo. La distribucion de las columnas que hemos modificado ha cambiado un poco, pero su desviacion y distribucion en general se ajusta mas para un analisis predictivo.

El analisis predictivo en el que vamos a trabajar en los siguientes laboratorios se realizara sobre las siguientes variables objetivo:

Vamos ahora a preparar los datos y las variables orientandolos a este tipo de modelos

Correlacion y Multicolinearidad

Otro analisis que debemos realizar antes de empezar a crear un modelo, es elegir cuales variables incluir y cuales no dependiendo de la variable que vamos a predecir, esta se conoce como variable objetivo. Es importante tener en cuenta atributos que aporten valor predictivo a la variable objetivo y eliminar de nuestro analisis aquellas que no o que, por el contrario introduscan ruido al modelo (Ya hemos hecho esto, por ejemplo con el atributo color). Esto facilitara al modelo de tener que elegir y buscar tendencias sobre muchas variables que, de antemano sabemos que no estan relacionadas con nuestra variable objetivo. Este proceso se le conoce como feature engineering*

Ademas de eliminar las columnas con ruido o con muchos Nulos, como ya hicimos con el atributo color, es importante validar la correlacion entre variables, es decir, analizar la relacion de cambio entre cada pareja de variables, si una varibale aumenta, aumenta la otra? disminuye? En la misma proporcion?.
Cuando dos variables predictivas estan altamente correlacionadas se le llama multicolinearidad, y sobre esto debemos tener cuidado, pues puede desestabilizar nuestro modelo. Entre mas correlacionadas esten dos variables, no sirve de nada incluir las dos en el modelo pues menor valor le aportarán, una es redundante con la otra.

Por otro lado, si una variable predictiva esta altamente correlacionada con la variable objetivo, en este caso es algo bueno! Significa que es una variable que si querremos incluir en el modelo la que explican en gran parte la varianza de la misma.

Vamos a analizar visualmente la relacion de las variables entre si, asi como con la variable objetivo score:

Esta funcion nos permite realizar varios analisis al tiempo:

Ademas de verlo graficamente, existe un indicador llamado indice de correlacion que permte calcular numericamente que tan relacionadas estan las variables. Este indicador varia de -1 (Correlacion altamente negativa) a 1 (Correlacion altamente positiva)

Es mas preciso que revisar las graficas una a una, pero ahora son muchos numeros y decimales lo que hace dificil lectura o la toma de alguna decision... Que pasa si vemos estos valores como un mapa de calor?

Mucho mejor! Que podemos observar ahora de los atributos?
Hay unos mas correlacionados que otros? Eso es bueno? o malo?
Recuerde que la columna score sera nuestra variable objetivo, alta correlacion positiva o negativa con ellas es algo bueno.

Tenga en cuenta sus descubrimientos para los proximos laboratorios.
Por ahora, vamos a guardar el set de datos con las transformaciones y limpieza que hemos realizado para usarlo en las siguientes clases.

Taller